#ifndef MANAGER_H
#define MANAGER_H

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "support.h"
#include "piece.h"
#include "block.h"

#define CATCH 100		//捕获玩家操作的帧数单位

class manager			//定义游戏管理类，管理整个游戏逻辑
{
public:
	manager();
	virtual ~manager();

	void Menu();		//菜单
	void AIshow(bool=0);	//AI自动控制,参数0时AI高速运行，参数1时AI低速运行
	void Singleplayer();	//单人游戏
	void PlayerVsCPU();	//玩家vsAI
	void Multiplayer();	//联机对战
	void Server_game();	//主机模式运行
	void Client_game();	//客户机模式运行
	void Opinion();		//设置

	void Draw_UI() const;//绘制界面

	int Frame();		//进行游戏的一帧,若达到自动下坠标准则自动下坠一层，其标准由speed决定,有操作返回0,暂停返回1,退出返回2,无操作返回3
	int Offset(piece &);		//扫描游戏区，尝试消除整行的方块，返回消除的行数
	void punish(piece &,int);	//惩罚函数，若对手消行你将被迫抬高
	int Evaluation(piece &);	//AI判定的评价函数，分析传入的游戏区状态，返回评价得分
	
	void Call_gameover(piece &);//游戏结束处理函数
	void Call_win(piece &);		//胜利处理函数
	void Call_pause(piece &);	//暂停函数

private:
	int score;			//记录分数
	int score_2;
	int sec;			//存放剩余时间(暂未使用参数)
	int speed;			//记录速度
	block obj_now;		//当前积木
	block obj_next;		//未来积木
	block obj_NULL;		//空积木
	piece UI;			//整体界面，标准大小21*38
	piece GameLocation;	//动态游戏区，标准大小20*10
	piece Draw_buffer;	//动态绘图缓冲
	piece Imformation;	//游戏信息区，标准大小8*4
	piece Interruption;	//中断信息区，显示胜负，暂停，标准大小3*6
};

#endif
